package com.okaixz.client.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.okaixz.client.model.domain.OrderInfo;
import com.okaixz.client.model.dto.OrderInfoDto;
import com.okaixz.client.model.dto.UserDto;
import com.okaixz.client.model.vo.WxAppPayResult;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author cdz
 * @since 2024-10-17
 */
public interface IOrderInfoService extends IService<OrderInfo> {

    List<OrderInfoDto> getListByUserId(String userId);


    /**
     * 创建订单并保存订单到redis缓存中
     * @param userId
     * @param gid
     * @return
     */
    OrderInfo createOrderAndSaveInCache(String userId,String clientName, Integer gid);
    OrderInfo createOrder(String userId, Integer gid);

    OrderInfo getCacheOrder(String orderId);
    OrderInfo getOrderFromRedisOrDb(String orderId);
    /**
     * 根据订单id查询微信支付返回结果 只有支付成功 才会返回用户信息 否则返回null
     * @param orderId
     * @return
     */
    UserDto queryWxAppPayOrder(String orderId);
    /**
     * 处理微信支付返回结果后处理订单信息
     * @param wxAppPayResult
     * @return
     */
    UserDto processWxAppPayResult(WxAppPayResult wxAppPayResult);
}
